﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;

namespace BBMS.DLL.DataContract
{
    public class LoaiChungTu : BBMS.DLL.Base.ObjectBase
    {
        public string Ma;
        public string Ten;
        public bool IsChi;
        public bool HasVat;

        public LoaiChungTu() 
        {
        }

        public LoaiChungTu(string ma, string ten, bool isChi, bool hasVAT)
        {
            this.Ma = ma;
            this.Ten = ten;
            this.IsChi = isChi;
            this.HasVat = hasVAT;
        }
        public override System.Collections.ArrayList GetAllObject()
        {
            ArrayList arrRet = base.GetAllObject();
            arrRet.Add(new LoaiChungTu("HDX", "Hóa đơn xuất", false, true));
            arrRet.Add(new LoaiChungTu("HDN", "Hóa đơn nhập", true, true));
            arrRet.Add(new LoaiChungTu("CTCK", "Chứng từ chiết khấu", false, false));
            arrRet.Add(new LoaiChungTu("CKTM", "Chứng từ các khoản cam kết thương mại", false, true));
            arrRet.Add(new LoaiChungTu("CTTH", "Chứng từ thu hộ", false, false));
            return arrRet;
        }
        public override System.Collections.ArrayList  GetAllObject(BBMS.DLL.Base.FilterParams fParams)
        {
            ArrayList arrRet = base.GetAllObject(fParams);
            arrRet.Add(new LoaiChungTu("HDX", "Hóa đơn xuất", false, true));
            arrRet.Add(new LoaiChungTu("HDN", "Hóa đơn nhập", true, true));
            arrRet.Add(new LoaiChungTu("CTCK", "Chứng từ chiết khấu", false, false));
            arrRet.Add(new LoaiChungTu("CKTM", "Chứng từ các khoản cam kết thương mại", false, true));
            arrRet.Add(new LoaiChungTu("CTTH", "Chứng từ thu hộ", false, false));
            return arrRet;
        }
        public override System.Collections.ArrayList  GetObjectByPage(out int curPage, out int totalPage, BBMS.DLL.Base.FilterParams fParams)
        {
            ArrayList arrRet = base.GetObjectByPage(out curPage, out totalPage, fParams);
            arrRet.Add(new LoaiChungTu("HDX", "Hóa đơn xuất", false, true));
            arrRet.Add(new LoaiChungTu("HDN", "Hóa đơn nhập", true, true));
            arrRet.Add(new LoaiChungTu("CTCK", "Chứng từ chiết khấu", false, false));
            arrRet.Add(new LoaiChungTu("CKTM", "Chứng từ các khoản cam kết thương mại", false, true));
            arrRet.Add(new LoaiChungTu("CTTH", "Chứng từ thu hộ", false, false));
            return arrRet;
        }
        

        public override object Key
        {
            get
            {
                return this.Ma;
            }
        }
        public override string Name
        {
            get
            {
                return this.Ten;
            }
        }
        public override string  TableName
        {
	        get 
	        {
                return "billtype";
	        }
        }
        
        public override string[] KeyFields
        {
            get
            {
                return new string[] { "Ma" };
            }
        }

        public override string[]  IDFields
        {
            get
            {
                return new string[] { "Ma" };
            }
        }

        public override System.Data.DataTable GetObjectDataTable()
        {
            System.Data.DataTable dt = new System.Data.DataTable(this.TableName);
            dt.Columns.Add("Ma", typeof(String));
            dt.Columns.Add("Ten", typeof(String));
            dt.Columns.Add("IsChi", typeof(Boolean));
            dt.Columns.Add("HasVat", typeof(Boolean));
            return dt;
        }
        public override System.Data.DataRow ObjectToDataRow()
        {
            System.Data.DataRow row = this.GetObjectDataTable().NewRow();
            row["Ma"] = this.Ma;
            row["Ten"] = this.Ten;
            row["IsChi"] = this.IsChi;
            row["HasVat"] = this.HasVat;
            return row;
        }

        public override BBMS.DLL.Base.ObjectBase DataRowToObject(System.Data.DataRow row)
        {
            LoaiChungTu obj = null;
            try
            {
                obj = new LoaiChungTu(row["Ma"].ToString(), row["Ten"].ToString(),
                    (row["IsChi"].ToString() == "True"), (row["HasVat"].ToString()=="True"));
            }
            catch { }
            return obj;
        }

        public override BBMS.DLL.Base.ObjectBase DataReaderToObject(MySql.Data.MySqlClient.MySqlDataReader rd)
        {
            LoaiChungTu obj = null;
            try
            {
                obj = new LoaiChungTu(rd["Ma"].ToString(), rd["Ten"].ToString(), 
                     (rd["IsChi"].ToString()=="True"), (rd["HasVat"].ToString() == "True"));
            }
            catch { }
            return obj;
        }

        public override string InsertNew()
        {
            string str = base.InsertNew();
            if (str == "") ObjectLists.LoaiChungTuList.Add(this);
            return str;
        }
        public override string Delete()
        {
            string str = base.Delete();
            if (str == "") ObjectLists.LoaiChungTuList.Remove(this);
            return str;
        }
        public override string Save()
        {
            string str = base.Save();
            if (str == "") ObjectLists.LoaiChungTuList.Update(this);
            return str;
        }
    }
}
